

<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=auto>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/favicon.png">
  <link rel="icon" href="/img/favicon.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="网格无关性检验">
  <meta name="author" content="Veen">
  <meta name="keywords" content="">
  <meta name="description" content="网格无关性检验">
<meta property="og:type" content="article">
<meta property="og:title" content="CFD Case Test">
<meta property="og:url" content="https://veenxz.github.io/CFD%20Case%20Test/index.html">
<meta property="og:site_name" content="Veen">
<meta property="og:description" content="网格无关性检验">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_error1.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_logerror.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_porder1.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_rich1.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_rich2.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_rich3.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_eerror1.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_eps1.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_rich4.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_eerror2.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_gcifine1.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_gcicoarse1.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_rstar.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_gcisum.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_reffective.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/pr.gif">
<meta property="og:image" content="https://veenxz.github.io/CFD%20Case%20Test/images/nasa_logo.gif">
<meta property="article:published_time" content="2019-12-08T11:20:20.000Z">
<meta property="article:modified_time" content="2021-10-14T17:31:59.861Z">
<meta property="article:author" content="Veen">
<meta property="article:tag" content="CFD">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://veenxz.github.io/CFD%20Case%20Test/eq_error1.gif">
  
  <title>CFD Case Test - Veen</title>

  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css@4/github-markdown.min.css" />
  <link  rel="stylesheet" href="/lib/hint/hint.min.css" />

  
    
    
      
      
        
          
        
        <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1/themes/prism.min.css" />
      
      
        <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1/plugins/line-numbers/prism-line-numbers.min.css" />
      
    
  

  
    <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.css" />
  


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_kmeydafke9r.css">


<link  rel="stylesheet" href="/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    var CONFIG = {"hostname":"veenxz.github.io","root":"/","version":"1.8.12","typing":{"enable":true,"typeSpeed":70,"cursorChar":"_","loop":false},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"right","visible":"hover","icon":""},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"copy_btn":true,"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":0},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":false,"baidu":null,"google":null,"gtag":null,"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname"}},"search_path":"/local-search.xml"};
  </script>
  <script  src="/js/utils.js" ></script>
  <script  src="/js/color-schema.js" ></script>
<meta name="generator" content="Hexo 6.3.0"></head>


<body>
  <header style="height: 55vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/">
      <strong>Veen</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/">
                <i class="iconfont icon-home-fill"></i>
                首页
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/archives/">
                <i class="iconfont icon-archive-fill"></i>
                归档
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/categories/">
                <i class="iconfont icon-category-fill"></i>
                分类
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/tags/">
                <i class="iconfont icon-tags-fill"></i>
                标签
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/about/">
                <i class="iconfont icon-user-fill"></i>
                关于
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              &nbsp;<i class="iconfont icon-search"></i>&nbsp;
            </a>
          </li>
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">&nbsp;<i
                class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="banner" id="banner" parallax=true
         style="background: url('/img/cinque-terre.jpg') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="page-header text-center fade-in-up">
            <span class="h2" id="subtitle" title="CFD Case Test">
              
            </span>

            
              <div class="mt-3">
  
  
    <span class="post-meta">
      <i class="iconfont icon-date-fill" aria-hidden="true"></i>
      <time datetime="2019-12-08 19:20" pubdate>
        2019年12月8日 晚上
      </time>
    </span>
  
</div>

<div class="mt-1">
  
    <span class="post-meta mr-2">
      <i class="iconfont icon-chart"></i>
      16k 字
    </span>
  

  
    <span class="post-meta mr-2">
      <i class="iconfont icon-clock-fill"></i>
      
      
      51 分钟
    </span>
  

  
  
</div>

            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid nopadding-x">
  <div class="row nomargin-x">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-x-md">
      <div class="container nopadding-x-md" id="board-ctn">
        <div class="py-5" id="board">
          <article class="post-content mx-auto">
            <!-- SEO header -->
            <h1 style="display: none">CFD Case Test</h1>
            
              <p class="note note-info">
                
                  本文最后更新于：2021年10月15日 凌晨
                
              </p>
            
            <div class="markdown-body">
              <h1 id="网格无关性检验"><a href="#网格无关性检验" class="headerlink" title="网格无关性检验"></a>网格无关性检验</h1><span id="more"></span>
<p><a target="_blank" rel="noopener" href="https://www.grc.nasa.gov/www/wind/valid/tutorial/spatconv.html">Reprinted From NASA V&amp;A</a> </p>
<h2 align="center" class="style3">Examining Spatial (Grid) Convergence</h2>

<!------------------------------------------------------------------------->
<h3 class="style1">Introduction </h3>
<p> The examination of the spatial convergence of a simulation 
is a straight-forward method for
determining the <i>ordered</i> <a href="errors.html">discretization
error</a> in a CFD simulation.  The method involves performing the
simulation on two or more successively finer grids.  The term <i>grid
convergence study</i> is equivalent to the commonly used term <i>grid
refinement study</i>. </p>

<p> As the grid is refined (grid cells become smaller and the number
of cells in the flow domain increase) and the time step is refined 
(reduced) the spatial and temporal discretization errors, respectively,
should asymptotically approaches zero, excluding computer round-off error.</p>

<p> Methods for examining the spatial and temporal convergence of CFD
simulations are presented in the book by <a
href="bibliog.html#Roach94">Roache</a>.  They are based on use of
Richardson's extrapolation.  A summary of the method is presented
here.</p>

<p> A general discussion of <a href="errors.html">errors in CFD 
computations</a> is available for background.</p>

<p> We will mostly likely want to determine the error band for the
engineering quantities obtained from the finest grid solution.
However, if the CFD simulations are part of a design study that may
require tens or hundreds of simulations, we may want to use one of the
coarser grids.  Thus we may also want to be able to determine the error
on the coarser grid.</p>

<!------------------------------------------------------------------------->

<h3 class="style1">Grid Considerations for a Grid Convergence 
Study</h3>

<p> The easiest approach for generating the series of grids is to
generate a grid with what one would consider <i>fine</i> grid spacing,
perhaps reaching the upper limit of one's tolerance for generating a
grid or waiting for the computation on that grid to converge.  Then
coarser grids can be obtained by removing every other grid line in each
coordinate direction.  This can be continued to create additional
levels of coarser grids.  In generating the fine grid, one can build in
the <b>n</b> levels of coarser grids by making sure that the number of
grid points in each coordinate direction satisfies the relation</p>

<p align="center"><b> N = 2<sup>n</sup> m + 1</b></p>
<p> where <b>m</b> is an integer.  For example, if two levels of coarser
grids are desired (i.e. fine, medium, and coarse grids) then the number
of grid points in each coordinate direction must equal <b>4 m + 1</b>.
The <b>m</b> may be different for each coordinate direction.</p>

<p> The <a target="_blank" rel="noopener" href="http://www.grc.nasa.gov/WWW/winddocs">WIND</a> code has a 
<a target="_blank" rel="noopener" href="http://www.grc.nasa.gov/WWW/winddocs/user/keywords/sequence.html">grid
sequencing control</a> that will solve the solution on the coarser grid
without having to change the grid input file, boundary condition
settings, or the input data file.  Further, the converged solution on
the coarser grid then can be used directly as the initial solution on
the finer grid.  This option was originally used to speed up
convergence of solutions; however, can be used effectively for a grid
convergence study.</p>

<p> It is not necessary to halve the number of grid points in each
coordinate direction to obtain the coarser grid.  <i>Non-integer</i> grid
refinement or coarsening can be used.  This may be desired since
<i>halfing</i> a grid may put the solution out of the asymptotic range.
Non-integer grid refinement or coarsening will require the generation
of a new grid.  It is important to maintain the same grid generation
parameters as the original grid. One approach is to select several grid
spacings as reference grid spacings.  One should be the grid spacing
normal to the walls.  Others may be spacings at flow boundaries, at
junctures in the geometry, or at zonal interfaces.  Upon picking the
ratio as which the grid is to be refined or coarsened, this same ratio
is applied to these spacings.  The number of grid points are then
adjusted according to grid quality parameters, such as grid spacing
ratio limits.  The surface and volume grids are then generated using
the same methods as the original grid.  The grid refinement ratio
should be a minimum of <b>r &gt;= 1.1</b> to allow the discretization
error to be differentiated from other error sources (iterative
convergence errors, computer round-off, etc...).</p>



<!------------------------------------------------------------------------->
<h3 class="style1">Order of Grid Convergence</h3>
<p> The order of grid convergence involves the behavior of the solution
error defined as the difference between the discrete solution and the
exact solution,</p>

<p align="center"><img src="eq_error1.gif" srcset="/img/loading.gif" lazyload alt="Formula is described in the surrounding text"></p>
<p> where <b>C</b> is a constant, <b>h</b> is some measure of grid
spacing, and <b>p</b> is the order of convergence.  A &quot;second-order&quot;
solution would have <b>p = 2</b>.</p>

<p> A CFD code uses a numerical algorithm that will provide a 
<i>theoretical order of convergence</i>; however, the boundary conditions,
numerical models, and grid will reduce this order so that the 
<i>observed order of convergence</i> will likely be lower.</p> 

<p> Neglecting higher-order terms and taking the logarithm of both sides of 
the above equation results in: </p> 

<p align="center"><img src="eq_logerror.gif" srcset="/img/loading.gif" lazyload alt="formula is described in the surrounding text"></p>
<p> The order of convergence <b>p</b> can be obtained from the slope of the
curve of <b>log(E)</b> versus <b>log(h)</b>.   If such data points
are available, the slope can be read from the graph or the slope can be
computed from a least-squares fit of the data.  The least-squares will likely 
be inaccurate if there are only a few data points.</p>

<p> A more direct evaluation of <b>p</b> can be obtained from three solutions 
using a constant grid refinement ratio <b>r</b>, </p>

<p align="center"><img src="eq_porder1.gif" srcset="/img/loading.gif" lazyload alt="formula is described in the surrounding text"></p>
<p> The <i>order of accuracy</i> is determined by the order of the
leading term of the <i>truncation error</i> and is represented with
respect to the scale of the discretization, <b>h</b>. The <i>local
order of accuracy</i> is the order for the stencil representing the
discretization of the equation at one location in the grid. The
<i>global order of accuracy</i> considers the propagation and
accumulation of errors outside the stencil. This propagation causes the
global order of accuracy to be, in general, one degree less than the
local order of accuracy.  The order of accuracy of the boundary
conditions can be one order of accuracy lower than the interior order
of accuracy without degrading the overall global accuracy.</p>


<!------------------------------------------------------------------------->
<h3 class="style1">Asymptotic Range of Convergence</h3>
<p> Assessing the accuracy of code and caluculations requires that the grid
is sufficiently refined such that the solution is in the asymptotic
range of convergence. The asymptotic range of convergence is obtained
when the grid spacing is such that the various grid spacings <b>h</b> and
errors <b>E</b> result in the constancy of <b>C</b>,</p>

<p align="center"><b> C = E / h<sup>p</sup> </b></p>
<p> Another check of the asymptotic range will be discussed in the section 
on the grid convergence index.</p>


<!------------------------------------------------------------------------->
<h3 class="style1">Richardson Extrapolation</h3>
<p> Richardson extrapolation is a method for obtaining a higher-order
estimate of the continuum value (value at zero grid spacing) from a
series of lower-order discrete values.</p>

<p> A simulation will yield a quantity <b>f</b> that can be expressed
in a general form by the series expansion:</p>

<p align="center"><b> 
  f = f<sub>h=0</sub> + g<sub>1</sub> h + g<sub>2</sub> h<sup>2</sup> 
    + g<sub>3</sub> h<sup>3</sup> + ...
</b></p>

<p> where <b>h</b> is the grid spacing and the functions
<b>g<sub>1</sub></b>, <b>g<sub>2</sub></b>, and <b>g<sub>3</sub></b>
are independent of the grid spacing.  The quantity <b>f</b> is
considered &quot;second-order&quot; if <b>g<sub>1</sub> = 0.0</b>.  The
<b>f<sub>h=0</sub></b> is the continuum value at zero grid spacing.</p>

<p> If one assumes a second-order solution and has computed <b>f</b> on
two grids of spacing <b>h<sub>1</sub></b> and <b>h<sub>2</sub></b> with
<b>h<sub>1</sub></b> being the finer (smaller) spacing, then one can
write two equations for the above expansion, neglect third-order and
higher terms, and solve for <b>f<sub>h=0</sub></b> to estimate the
continuum value,</p>

<p align="center"><img src="eq_rich1.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> where the grid refinement ratio is:</p> 
<p align="center"><b> r = h<sub>2</sub> /  h<sub>1</sub></b></p>
<p> The Richardson extrapolation can be generalized for a <b>p-th</b>
order methods and <b>r</b>-value of grid ratio (which does not have to
be an integer) as:</p>

<p align="center"><img src="eq_rich2.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> Traditionally, Richardson extrapolation has been used with grid
refinement ratios of <b>r = 2</b>.  Thus, the above equation simplifies
to:</p>

<p align="center"><img src="eq_rich3.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> In theory, the above equations for the Richardson extrapolation will
provide a fourth-order estimate of <b>f<sub>h=0</sub></b>, if 
<b>f<sub>1</sub></b> and <b>f<sub>2</sub></b>
were computed using exactly second-order methods.  Otherwise, it will
be a third-order estimate.  In general, we will consider <b>f<sub>h=0</sub></b>
to be <b>p+1</b> order accurate.  Richardson extrapolation can be applied
for the solution at each grid point, or to solution functionals, such
as pressure recovery or drag.  This assumes that the solution is
globally second-order in addition to locally second-order and that the
solution functionals were computed using consistent second-order
methods.  Other cautions with using Richardson extrapolation
(non-conservative, amplification of round-off error, etc...) are
discussed in the book by <a href="bibliog.html#Roachebook">Roache</a>.</p>

<p> For our purposes we will assume <b>f</b> is a solution functional (i.e.
pressure recovery).  The <b>f<sub>h=0</sub></b> is then as an estimate of <b>f</b>
in the limit as the grid spacing goes to zero.  One use of
<b>f<sub>h=0</sub></b> is to report the value as the an improved estimate of
<b>f<sub>1</sub></b> from the CFD study; however, one has to understand the caveats
mentioned above that go along with that value. </p> 

<p> The other use of <b>f<sub>h=0</sub></b> is to obtain an estimate of the
discretization error that bands <b>f</b> obtained from the CFD.  This use
will now be examined.</p>

<p> The difference between <b>f<sub>1</sub></b> and <b>f<sub>h=0</sub></b> is one error estimator;
however, this requires consideration of the caveats attached to
<b>f<sub>h=0</sub></b>.</p>

<p> We will focus on using <b>f<sub>1</sub></b> and <b>f<sub>2</sub></b> 
to obtain an error estimate.
Examining the generalized Richardson extrapolation equation above, the 
second term on the right-hand side
can be considered to be an an error estimator of <b>f<sub>1</sub></b>.  
The equation can be expressed as:</p>

<p align="center"><b> 
  A<sub>1</sub> =  E<sub>1</sub> 
  + O( h<sup>p+1</sup>, E<sub>1</sub><sup>2</sup>) 
</b></p>

<p> where <b>A<sub>1</sub></b> is the actual fractional error defined as:</p> 
<p align="center"><b> 
  A<sub>1</sub> =  ( f<sub>1</sub> - f<sub>h=0</sub> ) / f<sub>h=0</sub> 
</b></p>

<p> and <b>E<sub>1</sub></b> is the estimated fractional error for 
<b>f<sub>1</sub></b> defined as:</p> 

<p align="center"><img src="eq_eerror1.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> where the relative error is defined as:</p>
<p align="center"><img src="eq_eps1.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> This quantity should not be used as an error estimator since 
it does not take into account <b>r</b> or <b>p</b>.  This may lead to an
underestimation or overestimation of the error.  One could make this 
quantity artificially small by simply using a grid refinement 
ratio <b>r</b> close to 1.0.</p>

<p> The estimated fractional error <b>E<sub>1</sub></b> is an
<i>ordered</i> error estimator and a good approximation of the
discretization error on the fine grid if <b>f<sub>1</sub></b> and
<b>f<sub>2</sub></b> were obtained with good accuracy (i.e.
<b>E<sub>1</sub>&lt;1</b>).  The value of <b>E<sub>1</sub></b> may be
meaningless if <b>f<sub>1</sub></b> and <b>f<sub>h=0</sub></b> are zero
or very small relative to <b>f<sub>2</sub>-f<sub>1</sub></b>.  If such
is the case, then another normalizing value should be used in place of
<b>f<sub>1</sub></b>.</p>

<p> If a large number of CFD computations are to be performed (i.e for
a DOE study), one may wish to use the coarser grid with
<b>h<sub>2</sub></b>.  We will then want to estimate the error on the
coarser grid.  The Richardson extrapolation can be expressed as:</p>

<p align="center"><img src="eq_rich4.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> The estimated fractional error for <b>f<sub>2</sub></b> is 
defined as:</p> 

<p align="center"><img src="eq_eerror2.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> Richardson extrapolation is based on a Taylor series representation 
as indicated in Eqn. \ref{eq:series}.  If there are shocks and other 
discontinuities present, the Richardson extrapolation is invalid in 
the region of the discontinuity.  It is still felt that it applies 
to solution functionals computed from the entire flow field.</p>


<!------------------------------------------------------------------------->
<h3 class="style1">Grid Convergence Index (GCI)</h3>
<p> <a href="bibliog.html#Roach94">Roache</a> suggests a grid
convergence index <b>GCI</b> to provide a consistent manner in
reporting the results of grid convergence studies and perhaps provide
an error band on the grid convergence of the solution.  The <b>GCI</b>
can be computed using two levels of grid; however, three levels are
recommended in order to accurately estimate the order of convergence
and to check that the solutions are within the asymptotic range of
convergence.</p>

<p> A consistent numerical analysis will provide a result which
approaches the actual result as the grid resolution approaches zero.
Thus, the discretized equations will approach the solution of the
actual equations. One significant issue in numerical computations is
what level of grid resolution is appropriate. This is a function of the
flow conditions, type of analysis, geometry, and other variables. One
is often left to start with a grid resolution and then conduct a series
of grid refinements to assess the effect of grid resolution. This is
known as a grid refinement study.</p>

<p> One must recognize the distinction between a numerical result which
approaches an asymptotic numerical value and one which approaches the
true solution. It is hoped that as the grid is refined and resolution
improves that the computed solution will not change much and approach
an asymptotic value (i.e. the true numerical solution). There still may
be error between this asymptotic value and the true physical solution
to the equations.</p>

<p> <a href="bibliog.html#Roach94">Roache</a> has provided a methodology
for the uniform reporting of grid refinement studies. &quot;The basic idea
is to approximately relate the results from any grid refinement test to
the expected results from a grid doubling using a second-order method.
The <b>GCI</b> is based upon a grid refinement error estimator derived
from the theory of generalized Richardson Extrapolation.  It is
recommended for use whether or not Richardson Extrapolation is actually
used to improve the accuracy, and in some cases even if the conditions
for the theory do not strictly hold.&quot; The object is to provide a
measure of uncertainty of the grid convergence.</p>

<p> The <b>GCI</b> is a measure of the percentage the computed value is
away from the value of the asymptotic numerical value. It indicates an
error band on how far the solution is from the asymptotic value. It
indicates how much the solution would change with a further refinement
of the grid. A small value of <b>GCI</b> indicates that the computation
is within the asymptotic range.</p>

<p> The <b>GCI</b> on the fine grid is defined as:</p> 
<p align="center"><img src="eq_gcifine1.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> where <b>F<sub>s</sub></b> is a factor of safety.  The refinement
may be spatial or in time.  The factor of safety is recommended to be
<b>F<sub>s</sub>=3.0</b> for comparisons of two grids and
<b>F<sub>s</sub>=1.25</b> for comparisons over three or more grids.
The higher factor of safety is recommended for reporting purposes and
is quite conservative of the actual errors.</p>

<p> When a design or analysis activity will involve many CFD simulations 
(i.e. DOE study), one may want to use the coarser grid <b>h<sub>2</sub></b>.  It is 
then necessary to quantify the error for the coarser grid.  The <b>GCI</b> for 
the coarser grid is defined as:</p>

<p align="center"><img src="eq_gcicoarse1.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text" ></p>
<p> It is important that each grid level yield solutions that are in the 
asymptotic range of convergence for the computed solution.  This can be 
checked by observing two <b>GCI</b> values as computed over three grids,</p>

<p align="center"><b>GCI<sub>23</sub> = r<sup>p</sup> GCI<sub>12</sub></b></p>

<!------------------------------------------------------------------------->
<h3 class="style1">Required Grid Resolution</h3>
<p> If a desired accuracy level is known and results from the grid
resolution study are available, one can then estimate the grid
resolution required to obtain the desired level of accuracy,</p>

<p align="center"><img src="eq_rstar.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>

<!------------------------------------------------------------------------->
<h3 class="style1">Independent Coordinate Refinement and Mixed Order Methods</h3>
<p> The grid refinement ratio assumes that the refinement ratio
<b>r</b> applies equally in all coordinate directions <b>(i,j,k)</b>
for steady-state solutions and also time <b>t</b> for time-dependent
solutions.  If this is not the case, then the grid convergence indices
can be computed for each direction independently and then added to give
the overall grid convergence index,</p>

<p align="center"><img src="eq_gcisum.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>

<!------------------------------------------------------------------------->
<h3 class="style1">Effective Grid Refinement Ratio</h3>
<p> If one generates a finer or coarser grid and is unsure of the value of 
grid refinement ratio to use, one can compute an effective grid 
refinement ratio as:</p>

<p align="center"><img src="eq_reffective.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>
<p> where <b>N</b> is the total number of grid points used for the grid
and <b>D</b> is the dimension of the flow domain. This effective grid
refinement ratio can also be used for unstructured grids.</p>


<!------------------------------------------------------------------------->
<h3 class="style1">Example Grid Convergence Study</h3>
<p> The following example demonstrates the application of the above
procedures in conducting a grid convergence study.  The objective of
the CFD analysis was to determine the pressure recovery for an inlet.
The flow field is computed on three grids, each with twice the number
of grid points in the <b>i</b> and <b>j</b> coordinate directions as
the previous grid.  The number of grid points in the <b>k</b> direction
remains the same.  Since the flow is axisymmetric in the <b>k</b>
direction, we consider the finer grid to be double the next coarser
grid.   The table below indicates the grid information and the resulting
pressure recovery computed from the solutions. Each solution was
properly converged with respect to iterations.  The column indicated by
&quot;spacing&quot; is the spacing normalized by the spacing of the finest grid.</p>


<table border cellpadding=0 rules="none" align="center">

<tr >
<th align=center scope="col"> Grid </th>
<th align=center> Normalized Grid Spacing </th>
<th align=center> Pressure Recovery, Pr </th>
</tr>

<tr >
<td align=center scope="row"> 1 </td>
<td align=center> 1 </td>
<td align=center> 0.97050 </td>
</tr>

<tr >
<td align=center scope="row"> 2 </td>
<td align=center> 2 </td>
<td align=center> 0.96854 </td>
</tr>

<tr >
<td align=center scope="row"> 3 </td>
<td align=center> 4 </td>
<td align=center> 0.96178 </td>
</tr>

</table>


<p> The figure below shows the plot of pressure recoveries with varying 
grid spacings.  As the grid spacing reduces, the pressure recoveries 
approach an asymptotic zero-grid spacing value. </p>

<p> We determine the order of convergence observed from these results,</p>
<p align="center"><b> p = ln[ ( 0.96178 - 0.96854 ) / ( 0.96854 - 0.97050 ) ] 
     / ln(2) = 1.786170 </b></p>

<p> The theoretical order of convergence is <b>p=2.0</b>.  The
difference is most likely due to grid stretching, grid quality,
non-linearities in the solution, presence of shocks, turbulence
modeling, and perhaps other factors.</p>

<p> We now can apply Richardson extrapolation using the two finest
grids to obtain an estimate of the value of the pressure recovery at
zero grid spacing,</p>

<p align="center"><b> Pr<sub>h=0</sub> = 0.97050 + 
                 ( 0.97050 - 0.96854 ) / ( 2<sup>1.786170</sup> - 1 ) <br>
                 = 0.97050 + 0.00080 = 0.97130 </b></p>

<p> This value is also plotted on the figure below.</p>
<p> The grid convergence index for the fine grid solution can now be computed. 
A factor of safety of <b>F<sub>S</sub>=1.25</b> is used since 
three grids were used to estimage <b>p</b>.  The <b>GCI</b> for grids 1 
and 2 is:</p>

<p align="center"><b> GCI<sub>12</sub> = 1.25 | ( 0.97050 - 0.96854 ) / 0.97050 | 
            / ( 2<sup>1.786170</sup> - 1 )
            100%  = 0.103083% </b></p>

<p> The <b>GCI</b> for grids 2 and 3 is:</p>
<p align="center"><b> GCI<sub>23</sub> = 1.25 | ( 0.96854 - 0.96178 ) / 0.96854 | 
            / ( 2<sup>1.786170</sup> - 1 )
            100%  = 0.356249% </b></p>

<p> We can now check that the solutions were in the asymptotic range of 
convergence, </p>

<p align="center"><b> 0.356249 / ( 2<sup>1.786170</sup> 0.103083 ) = 1.002019 
   </b></p>

<p> which is approximately one and indicates that the solutions are well 
within the asymptotic range of convergence.</p>

<p> Based on this study we could say that the pressure recovery for the 
supersonic ramp is estimated to be <b> Pr = 0.97130 </b> with an error 
band of <b>0.103%</b> or <b>0.001</b>.</p>

<p align="center"><img src="pr.gif" srcset="/img/loading.gif" lazyload alt="Forumla is described in the surrounding text"></p>

<!------------------------------------------------------------------------->
<h3 class="style1">VERIFY: A Fortran program to Perform Calculations 
Associated with a Grid Convergence Study</h3>

<p> The Fortran 90 program <a href="verify.f90"> verify.f90</a> was 
written to carry out the calculations associated with a grid convergence 
study involving 3 or more grids.  The program is compiled on a unix system 
through the commands:</p>

<blockquote><b> f90 verify.f90 -o verify </b></blockquote>
<p> It reads in an ASCII file (<a href="prD.do">prD.do</a>) through the
standard input unit (5) that contains a list of pairs of grid size and
value of the observed quantity <b>f</b>.</p>

 <blockquote><b> 
verify &lt; <a href="prD.do">prD.do</a> &gt; <a href="prD.out">prD.out</a>
</b></blockquote>

<p> It assumes the values from the finest grid 
are listed first.  The output is then written to the standard output 
unit (6)  <a href="prD.out">prD.out</a>.
The output from the of {\tt verify} for the 
results of Appendix A are:</p>

<blockquote><div class="code-wrapper"><pre>
 --- VERIFY: Performs verification calculations ---

 Number of data sets read =  3

      Grid Size     Quantity

      1.000000      0.970500
      2.000000      0.968540
      4.000000      0.961780

 Order of convergence using first three finest grid 
 and assuming constant grid refinement (Eqn. 5.10.6.1) 
 Order of Convergence, p =  1.78618479

 Richardson Extrapolation: Use above order of convergence
 and first and second finest grids (Eqn. 5.4.1) 
 Estimate to zero grid value, f_exact =  0.971300304

 Grid Convergence Index on fine grids. Uses p from above.
 Factor of Safety =  1.25

   Grid     Refinement            
   Step      Ratio, r       GCI(%)
   1  2      2.000000      0.103080
   2  3      2.000000      0.356244

 Checking for asymptotic range using Eqn. 5.10.5.2.
 A ratio of 1.0 indicates asymptotic range.

  Grid Range    Ratio
  12 23      0.997980

 --- End of VERIFY ---
</pre></div>
</blockquote>

<!------------------------------------------------------------------------->
<h3 class="style1">Examples of Grid Converence 
Studies in the Archive</h3>

<p>A grid convergence study is performed in the<br><a href="wedge/wedge.html"> Supersonic Wedge</a> case.</p>
<!------------------------------------------------------------------------->
<h3 class="style1">Examples of Grid Converence 
Studies in Literature</h3>

<p> Other examples of grid convergence studies that use the procedures 
outlined above can be found in <a href="bibliog.html#Roachebook">the book 
by Roache</a> and the paper by <a href="bibliog.html#Steffen95" > 
Steffen et al.</a>. </p>


<!------------------------------------------------------------------------->
<h3 class="style1">NPARC Alliance Policy with Respect to Grid 
Converence Studies</h3>

<p> For the WIND verification and validation effort, it is suggested
that the above procedures be used when conducting and reporting results
from a grid convergence study.</p>


<!------------------------------------------------------------------------->
<p><hr><br><span style="font-weight: bold;">Last Updated:</span> Thursday, 17-Jul-2008 09:46:07 EDT<br></p>
<div id="footer">

<!-- <img src="images/nasa_logo.gif" srcset="/img/loading.gif" lazyload class="right"
      width= "50" height="40" alt="NASA meatball" />
-->

<div>
  <span style="font-weight: bold;">Responsible NASA Official/Curator:</span> 
      <a href="mailto:john.w.slater@nasa.gov">John W. Slater</a>
</div>

<p><span><span style="font-weight: bold;">Web Policies: </span><br>      <a target="_blank" rel="noopener" href="http://www.grc.nasa.gov/Doc/grcwebpolicies.html">Web Privacy Policy and Important Notices</a>&lt;/span&gt;<br /><br>        <span style="font-weight: bold;">Adobe Reader Download: </span><br>        <a target="_blank" rel="noopener" href="http://www.adobe.com/products/acrobat/readstep2.html" title="Go to Adobe Web Site"><br>        Adobe Reader</a><br><!-- <span class="notprinted"><span style="font-weight: bold;">Adobe Reader Download: </span>  
        <a target="_blank" rel="noopener" href="http://www.adobe.com/products/acrobat/readstep2.html" title="Go to Adobe Web Site">
        Adobe Reader</a>
</span> --></p>
<p>&lt;/div&gt;</p>
<p>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</p>
<p>&lt;/body&gt;<br>&lt;/html&gt;</p>

            </div>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/tags/CFD/">CFD</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">
                  
                    本博客所有文章除特别声明外，均采用 <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" rel="nofollow noopener noopener">CC BY-SA 4.0 协议</a> ，转载请注明出处！
                  
                </p>
              
              
                <div class="post-prevnext">
                  <article class="post-prev col-6">
                    
                    
                      <a href="/Win10%E8%A3%85%E6%9C%BA%E6%8C%87%E5%8D%97/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">Win10装机指南</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/Research/">
                        <span class="hidden-mobile">Research</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            
              <!-- Comments -->
              <article class="comments" id="comments" lazyload>
                
                  
                
                
  <div id="valine"></div>
  <script type="text/javascript">
    Fluid.utils.loadComments('#valine', function() {
      Fluid.utils.createScript('https://cdn.jsdelivr.net/npm/valine@1/dist/Valine.min.js', function() {
        var options = Object.assign(
          {"appId":"w8VaEP3iTgYj1EnQ7TsHSp6k-gzGzoHsz","appKey":"bB6pIAfcqCjPz7ujeqh5nVut","path":"window.location.pathname","placeholder":"说点什么","avatar":"retro","meta":["nick","mail","link"],"requiredFields":[],"pageSize":10,"lang":"zh-CN","highlight":false,"recordIP":false,"serverURLs":"","emojiCDN":null,"emojiMaps":null,"enableQQ":false},
          {
            el: "#valine",
            path: window.location.pathname
          }
        )
        new Valine(options);
        Fluid.utils.waitElementVisible('#valine .vcontent', () => {
          Fluid.plugins.initFancyBox('#valine .vcontent img:not(.vemoji)');
        })
      });
    });
  </script>
  <noscript>Please enable JavaScript to view the comments</noscript>


              </article>
            
          </article>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p>
  <div class="toc-body" id="toc-body"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
    

    
  </main>

  <footer class="text-center mt-5 py-3">
  <div class="footer-content">
     <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> <font size="3" face="" color="#2f4154"> <p class="copyright text-muted"> Copyright © Veen 2021 <br> Find me on <a href="https://github.com/Veenxz" target="_blank">GitHub</a> | <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" target="_blank"> <img src="https://d33wubrfki0l68.cloudfront.net/3031be41e8753c70508aa88e84ed8f4f653f157e/d2d9a/images/cc-by-nc-sa.svg" srcset="/img/loading.gif" lazyload alt="Creative Commons"> </a> </p> </font> <div> <span id="timeDate">载入天数...</span> <span id="times">载入时分秒...</span> <script src="/js/duration.js"></script> </div> 
  </div>
  
  <div class="statistics">
    
    

    
      
        <!-- 不蒜子统计PV -->
        <span id="busuanzi_container_site_pv" style="display: none">
            总访问量 
            <span id="busuanzi_value_site_pv"></span>
             次
          </span>
      
      
        <!-- 不蒜子统计UV -->
        <span id="busuanzi_container_site_uv" style="display: none">
            总访客数 
            <span id="busuanzi_value_site_uv"></span>
             人
          </span>
      
    
  </div>


  

  
</footer>


  <!-- SCRIPTS -->
  
  <script  src="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js" ></script>
<script  src="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/js/bootstrap.min.js" ></script>
<script  src="/js/events.js" ></script>
<script  src="/js/plugins.js" ></script>

<!-- Plugins -->


  <script  src="/js/local-search.js" ></script>



  
    <script  src="/js/img-lazyload.js" ></script>
  



  
    
  



  
    <script  src="https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/anchor-js@4/anchor.min.js" ></script>
  
  
    <script defer src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js" ></script>
  



  <script defer src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script>




  <script  src="https://cdn.jsdelivr.net/npm/typed.js@2/lib/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var title = document.getElementById('subtitle').title;
      
      typing(title)
      
    })(window, document);
  </script>





  

  
    <!-- MathJax -->
    <script>
      MathJax = {
        tex: {
          inlineMath: [['$', '$'], ['\\(', '\\)']]
        },
        loader: {
          load: ['ui/lazy']
        },
        options: {
          renderActions: {
            findScript: [10, doc => {
              document.querySelectorAll('script[type^="math/tex"]').forEach(node => {
                const display = !!node.type.match(/; *mode=display/);
                const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
                const text = document.createTextNode('');
                node.parentNode.replaceChild(text, node);
                math.start = { node: text, delim: '', n: 0 };
                math.end = { node: text, delim: '', n: 0 };
                doc.math.push(math);
              });
            }, '', false],
            insertedScript: [200, () => {
              document.querySelectorAll('mjx-container').forEach(node => {
                let target = node.parentNode;
                if (target.nodeName.toLowerCase() === 'li') {
                  target.parentNode.classList.add('has-jax');
                }
              });
            }, '', false]
          }
        }
      };
    </script>

    <script async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js" ></script>

  











<!-- 主题的启动项 保持在最底部 -->
<script  src="/js/boot.js" ></script>


</body>
</html>
